﻿using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using PortaCapena.OdooJsonRpcClient;
using PortaCapena.OdooJsonRpcClient.Attributes;
using PortaCapena.OdooJsonRpcClient.Consts;
using PortaCapena.OdooJsonRpcClient.Converters;
using PortaCapena.OdooJsonRpcClient.Models;
using System;
using System.ComponentModel;
using System.Runtime.Serialization;
using static OdooRpcClient.OdooEnum;

namespace OdooRpcClient.Model.Hr
{

    [OdooTableName("hr.employee")]
    [JsonConverter(typeof(OdooModelConverter))]
    public class HrEmployeeOdooModel : IOdooModel
    {

        /// <summary>
        /// 条码图片
        /// 忽略此属性
        /// </summary>
        [JsonIgnore()]
        //public string BarcodeImage => Converters.Helper.GenerateBarcodeString(Barcode, 20, 50);
        public string BarcodeImage { get; set; }


        /// <summary>
        /// 部门名称
        /// 忽略此属性
        /// </summary>
        [JsonIgnore()]
        public string DepartmentName { get; set; }

        /// <summary>
        /// 公司logo
        /// 忽略此属性
        /// </summary>
        [JsonIgnore()]
        public string CompanyLogo { get; set; }

        /// <summary>
        /// 职位名称
        /// 忽略此属性
        /// </summary>
        [JsonIgnore()]
        public string JobTitleName { get; set; }


        /// <summary>
        /// Name
        /// Char
        /// <summary>
        [JsonProperty("name")]
        [Description("Name")]
        public string Name { get; set; }

        /// <summary>
        /// UserId
        /// Many2one
        /// Related user name for the resource to manage its access.
        /// res.users
        /// <summary>
        [JsonProperty("user_id")]
        [Description("UserId")]
        public long? UserId { get; set; }

        /// <summary>
        /// UserPartnerId
        /// Many2one
        /// Partner-related data of the user
        /// res.partner
        /// <summary>
        [JsonProperty("user_partner_id")]
        [Description("UserPartnerId")]
        public long? UserPartnerId { get; set; }

        /// <summary>
        /// Active
        /// Boolean
        /// If the active field is set to False, it will allow you to hide the resource record without removing it.
        /// <summary>
        [JsonProperty("active")]
        [Description("Active")]
        public bool? Active { get; set; }

        /// <summary>
        /// CompanyId
        /// Many2one
        /// required
        /// res.company
        /// <summary>
        [JsonProperty("company_id")]
        [Description("CompanyId")]
        public long CompanyId { get; set; }

   

        /// <summary>
        /// AddressHomeId
        /// Many2one
        /// Enter here the private address of the employee, not the one linked to your company.
        /// res.partner
        /// <summary>
        [JsonProperty("address_home_id")]
        [Description("AddressHomeId")]
        public long? AddressHomeId { get; set; }

        /// <summary>
        /// IsAddressHomeACompany
        /// Boolean
        /// <summary>
        [JsonProperty("is_address_home_a_company")]
        [Description("IsAddressHomeACompany")]
        public bool? IsAddressHomeACompany { get; set; }

        /// <summary>
        /// PrivateEmail
        /// Char
        /// <summary>
        [JsonProperty("private_email")]
        [Description("PrivateEmail")]
        public string PrivateEmail { get; set; }

        /// <summary>
        /// CountryId
        /// Many2one
        /// res.country
        /// <summary>
        [JsonProperty("country_id")]
        [Description("CountryId")]
        public long? CountryId { get; set; }

        /// <summary>
        /// Gender
        /// Selection
        /// <summary>
        [JsonProperty("gender")]
        [Description("Gender")]
        public GenderHrEmployeeOdooEnum? Gender { get; set; }

        /// <summary>
        /// Marital
        /// Selection
        /// <summary>
        [JsonProperty("marital")]
        [Description("Marital")]
        public MaritalStatusHrEmployeeOdooEnum? Marital { get; set; }

        /// <summary>
        /// SpouseCompleteName
        /// Char
        /// <summary>
        [JsonProperty("spouse_complete_name")]
        [Description("SpouseCompleteName")]
        public string SpouseCompleteName { get; set; }

        /// <summary>
        /// SpouseBirthdate
        /// Date
        /// <summary>
        [JsonProperty("spouse_birthdate")]
        [Description("SpouseBirthdate")]
        public DateTime? SpouseBirthdate { get; set; }

        /// <summary>
        /// Children
        /// Integer
        /// <summary>
        [JsonProperty("children")]
        [Description("Children")]
        public int? Children { get; set; }

        /// <summary>
        /// PlaceOfBirth
        /// Char
        /// <summary>
        [JsonProperty("place_of_birth")]
        [Description("PlaceOfBirth")]
        public string PlaceOfBirth { get; set; }

        /// <summary>
        /// CountryOfBirth
        /// Many2one
        /// res.country
        /// <summary>
        [JsonProperty("country_of_birth")]
        [Description("CountryOfBirth")]
        public long? CountryOfBirth { get; set; }

        /// <summary>
        /// Birthday
        /// Date
        /// <summary>
        [JsonProperty("birthday")]
        [Description("Birthday")]
        public DateTime? Birthday { get; set; }

        /// <summary>
        /// Ssnid
        /// Char
        /// Social Security Number
        /// <summary>
        [JsonProperty("ssnid")]
        [Description("Ssnid")]
        public string Ssnid { get; set; }

        /// <summary>
        /// Sinid
        /// Char
        /// Social Insurance Number
        /// <summary>
        [JsonProperty("sinid")]
        [Description("Sinid")]
        public string Sinid { get; set; }

        /// <summary>
        /// IdentificationId
        /// Char
        /// <summary>
        [JsonProperty("identification_id")]
        [Description("IdentificationId")]
        public string IdentificationId { get; set; }

        /// <summary>
        /// PassportId
        /// Char
        /// <summary>
        [JsonProperty("passport_id")]
        [Description("PassportId")]
        public string PassportId { get; set; }

        /// <summary>
        /// BankAccountId
        /// Many2one
        /// Employee bank salary account
        /// res.partner.bank
        /// <summary>
        [JsonProperty("bank_account_id")]
        [Description("BankAccountId")]
        public long? BankAccountId { get; set; }

        /// <summary>
        /// PermitNo
        /// Char
        /// <summary>
        [JsonProperty("permit_no")]
        [Description("PermitNo")]
        public string PermitNo { get; set; }

        /// <summary>
        /// VisaNo
        /// Char
        /// <summary>
        [JsonProperty("visa_no")]
        [Description("VisaNo")]
        public string VisaNo { get; set; }

        /// <summary>
        /// VisaExpire
        /// Date
        /// <summary>
        [JsonProperty("visa_expire")]
        [Description("VisaExpire")]
        public DateTime? VisaExpire { get; set; }

        /// <summary>
        /// AdditionalNote
        /// Text
        /// <summary>
        [JsonProperty("additional_note")]
        [Description("AdditionalNote")]
        public string AdditionalNote { get; set; }

        /// <summary>
        /// Certificate
        /// Selection
        /// <summary>
        [JsonProperty("certificate")]
        [Description("Certificate")]
        public CertificateLevelHrEmployeeOdooEnum? Certificate { get; set; }

        /// <summary>
        /// StudyField
        /// Char
        /// <summary>
        [JsonProperty("study_field")]
        [Description("StudyField")]
        public string StudyField { get; set; }

        /// <summary>
        /// StudySchool
        /// Char
        /// <summary>
        [JsonProperty("study_school")]
        [Description("StudySchool")]
        public string StudySchool { get; set; }

        /// <summary>
        /// EmergencyContact
        /// Char
        /// <summary>
        [JsonProperty("emergency_contact")]
        [Description("EmergencyContact")]
        public string EmergencyContact { get; set; }

        /// <summary>
        /// EmergencyPhone
        /// Char
        /// <summary>
        [JsonProperty("emergency_phone")]
        [Description("EmergencyPhone")]
        public string EmergencyPhone { get; set; }

        /// <summary>
        /// KmHomeWork
        /// Integer
        /// <summary>
        [JsonProperty("km_home_work")]
        [Description("KmHomeWork")]
        public int? KmHomeWork { get; set; }

        /// <summary>
        /// Image1920
        /// Binary
        /// <summary>
        [JsonProperty("image_1920")]
        [Description("Image1920")]
        public string Image1920 { get; set; }

        /// <summary>
        /// Phone
        /// Char
        /// <summary>
        [JsonProperty("phone")]
        [Description("Phone")]
        public string Phone { get; set; }

        /// <summary>
        /// ChildIds
        /// One2many
        /// hr.employee
        /// parent_id
        /// <summary>
        [JsonProperty("child_ids")]
        [Description("ChildIds")]
        public long[] ChildIds { get; set; }

        /// <summary>
        /// CategoryIds
        /// Many2many
        /// hr.employee.category
        /// <summary>
        [JsonProperty("category_ids")]
        [Description("CategoryIds")]
        public long[] CategoryIds { get; set; }

        /// <summary>
        /// Notes
        /// Text
        /// <summary>
        [JsonProperty("notes")]
        [Description("Notes")]
        public string Notes { get; set; }

        /// <summary>
        /// Color
        /// Integer
        /// <summary>
        [JsonProperty("color")]
        [Description("Color")]
        public int? Color { get; set; }


        /// <summary>
        /// Barcode
        /// Char
        /// ID used for employee identification.
        /// <summary>
        [JsonProperty("barcode")]
        [Description("Barcode")]
        public string Barcode { get; set; }



        /// <summary>
        /// Pin
        /// Char
        /// PIN used to Check In/Out in Kiosk Mode (if enabled in Configuration).
        /// <summary>
        [JsonProperty("pin")]
        [Description("Pin")]
        public string Pin { get; set; }

        /// <summary>
        /// DepartureReason
        /// Selection
        /// <summary>
        [JsonProperty("departure_reason")]
        [Description("DepartureReason")]
        public DepartureReasonHrEmployeeOdooEnum? DepartureReason { get; set; }

        /// <summary>
        /// DepartureDescription
        /// Text
        /// <summary>
        [JsonProperty("departure_description")]
        [Description("DepartureDescription")]
        public string DepartureDescription { get; set; }

        /// <summary>
        /// DepartureDate
        /// Date
        /// <summary>
        [JsonProperty("departure_date")]
        [Description("DepartureDate")]
        public DateTime? DepartureDate { get; set; }

        /// <summary>
        /// MessageMainAttachmentId
        /// Many2one
        /// ir.attachment
        /// <summary>
        [JsonProperty("message_main_attachment_id")]
        [Description("MessageMainAttachmentId")]
        public long? MessageMainAttachmentId { get; set; }

        /// <summary>
        /// SubordinateIds
        /// One2many
        /// Direct and indirect subordinates
        /// hr.employee
        /// <summary>
        [JsonProperty("subordinate_ids")]
        [Description("SubordinateIds")]
        public long[] SubordinateIds { get; set; }

        /// <summary>
        /// Image1024
        /// Binary
        /// <summary>
        [JsonProperty("image_1024")]
        [Description("Image1024")]
        public string Image1024 { get; set; }

        /// <summary>
        /// Image512
        /// Binary
        /// <summary>
        [JsonProperty("image_512")]
        [Description("Image512")]
        public string Image512 { get; set; }

        /// <summary>
        /// Image256
        /// Binary
        /// <summary>
        [JsonProperty("image_256")]
        [Description("Image256")]
        public string Image256 { get; set; }

        /// <summary>
        /// Image128
        /// Binary
        /// <summary>
        [JsonProperty("image_128")]
        [Description("Image128")]
        public string Image128 { get; set; }

        /// <summary>
        /// ActivityIds
        /// One2many
        /// mail.activity
        /// res_id
        /// <summary>
        [JsonProperty("activity_ids")]
        [Description("ActivityIds")]
        public long[] ActivityIds { get; set; }

        /// <summary>
        /// ActivityState
        /// Selection
        /// Status based on activities
        ///     Overdue: Due date is already passed
        ///     Today: Activity date is today
        ///     Planned: Future activities.
   /// <summary>
   [JsonProperty("activity_state")]
   [Description("ActivityState")]
   public ActivityStateHrEmployeeOdooEnum? ActivityState { get; set; }

        /// <summary>
        /// ActivityUserId
        /// Many2one
        /// res.users
        /// <summary>
        [JsonProperty("activity_user_id")]
        [Description("ActivityUserId")]
        public long? ActivityUserId { get; set; }

        /// <summary>
        /// ActivityTypeId
        /// Many2one
        /// mail.activity.type
        /// <summary>
        [JsonProperty("activity_type_id")]
        [Description("ActivityTypeId")]
        public long? ActivityTypeId { get; set; }

        /// <summary>
        /// ActivityTypeIcon
        /// Char
        /// Font awesome icon e.g. fa-tasks
        /// <summary>
        [JsonProperty("activity_type_icon")]
        [Description("ActivityTypeIcon")]
        public string ActivityTypeIcon { get; set; }

        /// <summary>
        /// ActivityDateDeadline
        /// Date
        /// <summary>
        [JsonProperty("activity_date_deadline")]
        [Description("ActivityDateDeadline")]
        public DateTime? ActivityDateDeadline { get; set; }

        /// <summary>
        /// ActivitySummary
        /// Char
        /// <summary>
        [JsonProperty("activity_summary")]
        [Description("ActivitySummary")]
        public string ActivitySummary { get; set; }

        /// <summary>
        /// ActivityExceptionDecoration
        /// Selection
        /// Type of the exception activity on record.
        /// <summary>
        [JsonProperty("activity_exception_decoration")]
        [Description("ActivityExceptionDecoration")]
        public ActivityExceptionDecorationHrEmployeeOdooEnum? ActivityExceptionDecoration { get; set; }

        /// <summary>
        /// ActivityExceptionIcon
        /// Char
        /// Icon to indicate an exception activity.
        /// <summary>
        [JsonProperty("activity_exception_icon")]
        [Description("ActivityExceptionIcon")]
        public string ActivityExceptionIcon { get; set; }

        /// <summary>
        /// MessageIsFollower
        /// Boolean
        /// <summary>
        [JsonProperty("message_is_follower")]
        [Description("MessageIsFollower")]
        public bool? MessageIsFollower { get; set; }

        /// <summary>
        /// MessageFollowerIds
        /// One2many
        /// mail.followers
        /// res_id
        /// <summary>
        [JsonProperty("message_follower_ids")]
        [Description("MessageFollowerIds")]
        public long[] MessageFollowerIds { get; set; }

        /// <summary>
        /// MessagePartnerIds
        /// Many2many
        /// res.partner
        /// <summary>
        [JsonProperty("message_partner_ids")]
        [Description("MessagePartnerIds")]
        public long[] MessagePartnerIds { get; set; }

        /// <summary>
        /// MessageChannelIds
        /// Many2many
        /// mail.channel
        /// <summary>
        [JsonProperty("message_channel_ids")]
        [Description("MessageChannelIds")]
        public long[] MessageChannelIds { get; set; }

        /// <summary>
        /// MessageIds
        /// One2many
        /// mail.message
        /// res_id
        /// <summary>
        [JsonProperty("message_ids")]
        [Description("MessageIds")]
        public long[] MessageIds { get; set; }

        /// <summary>
        /// MessageUnread
        /// Boolean
        /// If checked, new messages require your attention.
        /// <summary>
        [JsonProperty("message_unread")]
        [Description("MessageUnread")]
        public bool? MessageUnread { get; set; }

        /// <summary>
        /// MessageUnreadCounter
        /// Integer
        /// Number of unread messages
        /// <summary>
        [JsonProperty("message_unread_counter")]
        [Description("MessageUnreadCounter")]
        public int? MessageUnreadCounter { get; set; }

        /// <summary>
        /// MessageNeedaction
        /// Boolean
        /// If checked, new messages require your attention.
        /// <summary>
        [JsonProperty("message_needaction")]
        [Description("MessageNeedaction")]
        public bool? MessageNeedaction { get; set; }

        /// <summary>
        /// MessageNeedactionCounter
        /// Integer
        /// Number of messages which requires an action
        /// <summary>
        [JsonProperty("message_needaction_counter")]
        [Description("MessageNeedactionCounter")]
        public int? MessageNeedactionCounter { get; set; }

        /// <summary>
        /// MessageHasError
        /// Boolean
        /// If checked, some messages have a delivery error.
        /// <summary>
        [JsonProperty("message_has_error")]
        [Description("MessageHasError")]
        public bool? MessageHasError { get; set; }

        /// <summary>
        /// MessageHasErrorCounter
        /// Integer
        /// Number of messages with delivery error
        /// <summary>
        [JsonProperty("message_has_error_counter")]
        [Description("MessageHasErrorCounter")]
        public int? MessageHasErrorCounter { get; set; }

        /// <summary>
        /// MessageAttachmentCount
        /// Integer
        /// <summary>
        [JsonProperty("message_attachment_count")]
        [Description("MessageAttachmentCount")]
        public int? MessageAttachmentCount { get; set; }

        /// <summary>
        /// MessageHasSmsError
        /// Boolean
        /// If checked, some messages have a delivery error.
        /// <summary>
        [JsonProperty("message_has_sms_error")]
        [Description("MessageHasSmsError")]
        public bool? MessageHasSmsError { get; set; }

        /// <summary>
        /// DepartmentId
        /// Many2one
        /// hr.department
        /// <summary>
        [JsonProperty("department_id")]
        [Description("DepartmentId")]
        public long? DepartmentId { get; set; }

 

        /// <summary>
        /// JobId
        /// Many2one
        /// hr.job
        /// <summary>
        [JsonProperty("job_id")]
        [Description("JobId")]
        public long? JobId { get; set; }

        /// <summary>
        /// JobTitle
        /// Char
        /// <summary>
        [JsonProperty("job_title")]
        [Description("JobTitle")]
        public string JobTitle { get; set; }

        /// <summary>
        /// AddressId
        /// Many2one
        /// res.partner
        /// <summary>
        [JsonProperty("address_id")]
        [Description("AddressId")]
        public long? AddressId { get; set; }

        /// <summary>
        /// WorkPhone
        /// Char
        /// <summary>
        [JsonProperty("work_phone")]
        [Description("WorkPhone")]
        public string WorkPhone { get; set; }

        /// <summary>
        /// MobilePhone
        /// Char
        /// <summary>
        [JsonProperty("mobile_phone")]
        [Description("MobilePhone")]
        public string MobilePhone { get; set; }

        /// <summary>
        /// WorkEmail
        /// Char
        /// <summary>
        [JsonProperty("work_email")]
        [Description("WorkEmail")]
        public string WorkEmail { get; set; }

        /// <summary>
        /// WorkLocation
        /// Char
        /// <summary>
        [JsonProperty("work_location")]
        [Description("WorkLocation")]
        public string WorkLocation { get; set; }

        /// <summary>
        /// ResourceId
        /// Many2one
        /// required
        /// resource.resource
        /// <summary>
        [JsonProperty("resource_id")]
        [Description("ResourceId")]
        public long ResourceId { get; set; }

        /// <summary>
        /// ResourceCalendarId
        /// Many2one
        /// Define the schedule of resource
        /// resource.calendar
        /// <summary>
        [JsonProperty("resource_calendar_id")]
        [Description("ResourceCalendarId")]
        public long? ResourceCalendarId { get; set; }

        /// <summary>
        /// ParentId
        /// Many2one
        /// hr.employee
        /// <summary>
        [JsonProperty("parent_id")]
        [Description("ParentId")]
        public long? ParentId { get; set; }

        /// <summary>
        /// CoachId
        /// Many2one
        /// Select the "Employee" who is the coach of this employee.
        ///  The "Coach" has no specific rights or responsibilities by default.
        /// hr.employee
        /// <summary>
        [JsonProperty("coach_id")]
        [Description("CoachId")]
        public long? CoachId { get; set; }

        /// <summary>
        /// Tz
        /// Selection
        /// This field is used in order to define in which timezone the resources will work.
        /// <summary>
        [JsonProperty("tz")]
        [Description("Tz")]
        public TimezoneOdooEnum? Tz { get; set; }

        /// <summary>
        /// HrPresenceState
        /// Selection
        /// <summary>
        [JsonProperty("hr_presence_state")]
        [Description("HrPresenceState")]
        public HrPresenceStateHrEmployeeOdooEnum? HrPresenceState { get; set; }

        /// <summary>
        /// LastActivity
        /// Date
        /// <summary>
        [JsonProperty("last_activity")]
        [Description("LastActivity")]
        public DateTime? LastActivity { get; set; }

        /// <summary>
        /// LastActivityTime
        /// Char
        /// <summary>
        [JsonProperty("last_activity_time")]
        [Description("LastActivityTime")]
        public string LastActivityTime { get; set; }

        /// <summary>
        /// HrIconDisplay
        /// Selection
        /// <summary>
        [JsonProperty("hr_icon_display")]
        [Description("HrIconDisplay")]
        public HrIconDisplayHrEmployeeOdooEnum? HrIconDisplay { get; set; }

        /// <summary>
        /// ChildAllCount
        /// Integer
        /// <summary>
        [JsonProperty("child_all_count")]
        [Description("ChildAllCount")]
        public int? ChildAllCount { get; set; }

        /// <summary>
        /// Id
        /// Integer
        /// <summary>
        [JsonProperty("id")]
        [Description("Id")]
        public long Id { get; set; }

        /// <summary>
        /// DisplayName
        /// Char
        /// <summary>
        [JsonProperty("display_name")]
        [Description("DisplayName")]
        public string DisplayName { get; set; }

        /// <summary>
        /// CreateUid
        /// Many2one
        /// res.users
        /// <summary>
        [JsonProperty("create_uid")]
        [Description("CreateUid")]
        public long? CreateUid { get; set; }

        /// <summary>
        /// CreateDate
        /// Datetime
        /// <summary>
        [JsonProperty("create_date")]
        [Description("CreateDate")]
        public DateTime? CreateDate { get; set; }

        /// <summary>
        /// WriteUid
        /// Many2one
        /// res.users
        /// <summary>
        [JsonProperty("write_uid")]
        [Description("WriteUid")]
        public long? WriteUid { get; set; }

        /// <summary>
        /// WriteDate
        /// Datetime
        /// <summary>
        [JsonProperty("write_date")]
        [Description("WriteDate")]
        public DateTime? WriteDate { get; set; }

        /// <summary>
        /// LastUpdate
        /// Datetime
        /// <summary>
        [JsonProperty("__last_update")]
        [Description("LastUpdate")]
        public DateTime? LastUpdate { get; set; }
    }


    [JsonConverter(typeof(StringEnumConverter))]
    public enum GenderHrEmployeeOdooEnum
    {
        [EnumMember(Value = "male")]
        Male = 1,

        [EnumMember(Value = "female")]
        Female = 2,

        [EnumMember(Value = "other")]
        Other = 3,
    }


    [JsonConverter(typeof(StringEnumConverter))]
    public enum MaritalStatusHrEmployeeOdooEnum
    {
        [EnumMember(Value = "single")]
        Single = 1,

        [EnumMember(Value = "married")]
        Married = 2,

        [EnumMember(Value = "cohabitant")]
        LegalCohabitant = 3,

        [EnumMember(Value = "widower")]
        Widower = 4,

        [EnumMember(Value = "divorced")]
        Divorced = 5,
    }


    [JsonConverter(typeof(StringEnumConverter))]
    public enum CertificateLevelHrEmployeeOdooEnum
    {
        [EnumMember(Value = "graduate")]
        Graduate = 1,

        [EnumMember(Value = "bachelor")]
        Bachelor = 2,

        [EnumMember(Value = "master")]
        Master = 3,

        [EnumMember(Value = "doctor")]
        Doctor = 4,

        [EnumMember(Value = "other")]
        Other = 5,
    }


    [JsonConverter(typeof(StringEnumConverter))]
    public enum DepartureReasonHrEmployeeOdooEnum
    {
        [EnumMember(Value = "fired")]
        Fired = 1,

        [EnumMember(Value = "resigned")]
        Resigned = 2,

        [EnumMember(Value = "retired")]
        Retired = 3,
    }


    // Status based on activities
    // Overdue: Due date is already passed
    // Today: Activity date is today
    // Planned: Future activities.
    [JsonConverter(typeof(StringEnumConverter))]
    public enum ActivityStateHrEmployeeOdooEnum
    {
        [EnumMember(Value = "overdue")]
        Overdue = 1,

        [EnumMember(Value = "today")]
        Today = 2,

        [EnumMember(Value = "planned")]
        Planned = 3,
    }


    // Type of the exception activity on record.
    [JsonConverter(typeof(StringEnumConverter))]
    public enum ActivityExceptionDecorationHrEmployeeOdooEnum
    {
        [EnumMember(Value = "warning")]
        Alert = 1,

        [EnumMember(Value = "danger")]
        Error = 2,
    }




    [JsonConverter(typeof(StringEnumConverter))]
    public enum HrPresenceStateHrEmployeeOdooEnum
    {
        [EnumMember(Value = "present")]
        Present = 1,

        [EnumMember(Value = "absent")]
        Absent = 2,

        [EnumMember(Value = "to_define")]
        ToDefine = 3,
    }


    [JsonConverter(typeof(StringEnumConverter))]
    public enum HrIconDisplayHrEmployeeOdooEnum
    {
        [EnumMember(Value = "presence_present")]
        Present = 1,

        [EnumMember(Value = "presence_absent_active")]
        PresentButNotActive = 2,

        [EnumMember(Value = "presence_absent")]
        Absent = 3,

        [EnumMember(Value = "presence_to_define")]
        ToDefine = 4,

        [EnumMember(Value = "presence_undetermined")]
        Undetermined = 5,
    }




}